﻿#pragma once

#include <stdio.h>
#include <assert.h>
#include <stdlib.h>

typedef int SLTDataType;

//创建一个节点
typedef struct SListNode
{
	SLTDataType data;
	struct SListNode* next;//注意这里不能写重命名之后的
}SListNode;

//增加节点(空间)
SListNode* SLTBuyNode(SLTDataType x);

//尾插数据
void SLTPushBack(SListNode** pphead, SLTDataType x);

//打印节点数据
void SLTPrint(SListNode* phead);

//头插数据
void SLTPushFront(SListNode** pphead, SLTDataType x);

//查找数据
SListNode* SLTFind(SListNode* phead, SLTDataType x);

//尾删数据
void SLTPopBack(SListNode** pphead);

//头删数据
void SLTPopFront(SListNode** pphead);

//在指定位置之前插⼊数据
void SLTInsert(SListNode** pphead, SListNode* pos, SLTDataType x);

//在指定位置之后插入数据
void SLTInsertAfter(SListNode* pos, SLTDataType x);

//删除pos节点
void SLTErase(SListNode** pphead, SListNode* pos);

//删除pos之后的节点
void SLTEraseAfter(SListNode* pos);

//销毁链表
void SListDesTroy(SListNode** pphead);